Page({
  data: {
    // 是否显示倒计时
    countDownVisible: false,
    // 登录成功重定向
    redirectUrl: '',
    // 当前剩余倒计时时间
    timeData: {
      seconds: 0
    },
    // 用户输入的数据
    mobile: '13254521265',
    code: ''
  },

  // 检查手机号格式
  checkMobile(mobile) {
    // 定义规则
    const patten = /^1[3-9][0-9]{9}$/
    // 返回校验结果
    return patten.test(mobile.trim())
  },

  // 检查验证码格式
  checkCode(code) {
    const patten = /^[0-9]{6}$/
    return patten.test(code)
  },

  async getCode() {
    // 正则校验手机号
    console.log(this.data.mobile);

    if (!this.checkMobile(this.data.mobile)) return wx.utils.toast('请输入正确手机号')

    // 请求验证码
    const { code, data } = await wx.http.get('/code', { mobile: this.data.mobile.trim() })

    if (code !== 10000) return wx.utils.toast()

    // 将代码放入剪贴板
    wx.setClipboardData({
      data: data.code,
    })

    // 显示倒计时
    this.setData({
      countDownVisible: true
    })
  },

  // 接收跳转进入的参数
  onLoad(options) {
    // 这里的数据改变, 不用setData是因为没有影响页面的渲染
    this.data.redirectUrl = options.redirectUrl
  },

  async login() {
    // 1. 验证手机号和验证码格式对不对
    if (!this.checkMobile(this.data.mobile)) return wx.utils.toast('请输入正确手机号')
    if (!this.checkCode(this.data.code)) return wx.utils.toast('请输入正确验证码')

    // 2. 如果对了, 发送请求进行登录
    const { mobile, code } = this.data
    const res = await wx.http.post('/login', { mobile, code })

    if (res.code !== 10000) return wx.utils.toast()

    // 3. 如果登录成功, 要将 token 存起来, 跳转到原来的页面
    wx.setStorageSync('token', res.data.token)
    // 除了 token 还需要记录 refresh token
    wx.setStorageSync('refreshToken', res.data.refreshToken)

    console.log(this.data.redirectUrl);
    if (this.data.redirectUrl) {
      wx.redirectTo({
        url: '/' + this.data.redirectUrl,
      })
    } else {
      wx.switchTab({
        url: '/pages/index/index',
      })
    }
  },

  countDownChange(ev) {
    // 每当倒计时触发倒数的时候
    this.setData({
      // 将时间数据记录下来
      timeData: ev.detail,
      // 判断是否已经结束
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
})
